package com.course02.order_backend.config.llh;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;


//解除Security登录页面的拦截
@Configuration
@EnableWebSecurity
public class SecurityConfig {

    /**
     * 配置安全过滤链：放行测试接口，其他接口按需保护
     */
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
                // 关闭 CSRF 保护（开发环境简化配置，生产环境需开启）
                .csrf(csrf -> csrf.disable())
                // 配置接口访问权限
                .authorizeHttpRequests(auth -> auth
                        // 放行所有测试接口（根据你的实际接口路径调整）
                        .requestMatchers(
                                "/test/log",          // 日志测试接口
                                "/test/error/db",     // 数据库错误测试接口
                                "/test/error/code",   // 代码异常测试接口
                                "/dish/*",            // 菜品相关测试接口（如查询不存在的菜品）
                                "/order/*",           // 订单相关测试接口
                                "/table/*",// 桌号相关测试接口
                                "/sms/send",//放行验证码和登录接口
                                "/login/sms"
                        ).permitAll()  // 允许匿名访问
                        // 其他接口需要认证（登录后才能访问）
                        .anyRequest().authenticated()
                )
                // 配置默认登录页面（如果需要登录功能，可保留；纯测试可省略）
                .formLogin(form -> form
                        .permitAll()  // 允许匿名访问登录页
                );
        return http.build();
    }

}
